package LeetCode刷题;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2022-01-25 10:52
 * @description: Functions of this class is
 **/
public class No大数相加 {
    /**
     * 两个大数相加。
     * 1、是整数；
     * 2、两个数无限大，long都装不下；
     * 3、不能用BigInteger；
     * 4、不能用任何包装类提供的运算方法；
     * 5、两个数都是以字符串的方式提供。
     */
    class Solution {
        public String addStrings(String num1, String num2) {
            int i = num1.length() - 1, j = num2.length() - 1, add = 0;
            StringBuffer ans = new StringBuffer();
            while (i >= 0 || j >= 0 || add != 0) {
                int x = i >= 0 ? num1.charAt(i) - '0' : 0;
                int y = j >= 0 ? num2.charAt(j) - '0' : 0;
                int result = x + y + add;
                ans.append(result % 10);
                add = result / 10;
                i--;
                j--;
            }
            // 计算完以后的答案需要翻转过来
            ans.reverse();
            return ans.toString();
        }
    }
}